home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Aminet 24
/
Aminet 24 (1998)(GTI - Schatztruhe)[!][Apr 1998].iso
/
Aminet
/
dev
/
misc
/
Hunk.lha
/
Hunk
/
Hoppers
/
Oberon-A_16.hop
< prev
next >
Wrap
Text File
|
1998-02-14
|
6KB
|
140 lines
;*************************************************************************
;** Oberon-A 1.6 **
;** Contributor: L.Lucius Sept 23rd 1995 **
;** Modified for HOp: Thomas Richter (thor) Nov 1st 1997 **
;** Function: Modify 68000 math routines to use 68020+ instructions. **
;*************************************************************************
;*************************************************************************
;
; DIV
;
#match
#code
48E7 3C00 ; MOVEM.L D2-D5,-(A7)
4A80 ; TST.L D0
5BC4 ; SMI D4
6A02 ; BPL.B 0042
4480 ; NEG.L D0
4A81 ; TST.L D1
5BC5 ; SMI D5
6A02 ; BPL.B 004A
4481 ; NEG.L D1
4A81 ; TST.L D1
6612 ; BNE.B 0060
7069 ; MOVEQ #69,D0
41FA 009C ; LEA 009C(PC),A0
2239 0001 0000 ; MOVE.L 00010000,D1
4EB9 RRRR RRRR ; JSR Kernel_Halt
B081 ; CMP.L D1,D0
620E ; BHI.B 0072
6706 ; BEQ.B 006C
2200 ; MOVE.L D0,D1
7000 ; MOVEQ #00,D0
6070 ; BRA.B 00DC
7001 ; MOVEQ #01,D0
7200 ; MOVEQ #00,D1
606A ; BRA.B 00DC
B2BC 0000 0001 ; CMP.L #00000001,D1
6604 ; BNE.B 007E
7200 ; MOVEQ #00,D1
605E ; BRA.B 00DC
B0BC 0000 FFFF ; CMP.L #0000FFFF,D0
620E ; BHI.B 0094
80C1 ; DIVU.W D1,D0
4840 ; SWAP D0
7200 ; MOVEQ #00,D1
3200 ; MOVE.W D0,D1
4240 ; CLR.W D0
4840 ; SWAP D0
6048 ; BRA.B 00DC
B2BC 0000 FFFF ; CMP.L #0000FFFF,D1
6220 ; BHI.B 00BC
2400 ; MOVE.L D0,D2
4242 ; CLR.W D2
4842 ; SWAP D2
84C1 ; DIVU.W D1,D2
7600 ; MOVEQ #00,D3
3602 ; MOVE.W D2,D3
4843 ; SWAP D3
3400 ; MOVE.W D0,D2
84C1 ; DIVU.W D1,D2
2202 ; MOVE.L D2,D1
4241 ; CLR.W D1
4841 ; SWAP D1
7000 ; MOVEQ #00,D0
3002 ; MOVE.W D2,D0
D083 ; ADD.L D3,D0
6020 ; BRA.B 00DC
7401 ; MOVEQ #01,D2
7600 ; MOVEQ #00,D3
B280 ; CMP.L D0,D1
6206 ; BHI.B 00CA
D482 ; ADD.L D2,D2
D281 ; ADD.L D1,D1
6AF6 ; BPL.B 00C0
B280 ; CMP.L D0,D1
6204 ; BHI.B 00D2
8682 ; OR.L D2,D3
9081 ; SUB.L D1,D0
E289 ; LSR.L #1,D1
E28A ; LSR.L #1,D2
66F2 ; BNE.B 00CA
2200 ; MOVE.L D0,D1
2003 ; MOVE.L D3,D0
BA04 ; CMP.B D4,D5
6702 ; BEQ.B 00E2
4480 ; NEG.L D0
4A04 ; TST.B D4
6702 ; BEQ.B 00E8
4481 ; NEG.L D1
4CDF 003C ; MOVEM.L (A7)+,D2-D5
4E75 ; RTS
;
;
#replace
4C41 0801 ; DIVSL.L D1,D1:D0
4E75 ; RTS
#end
;*************************************************************************
;
; MUL
;
#match
#code
48E7 3800 ; MOVEM.L D2-D4,-(A7)
4A80 ; TST.L D0
5BC4 ; SMI D4
6A02 ; BPL.B 000C
4480 ; NEG.L D0
4A81 ; TST.L D1
6A04 ; BPL.B 0014
4604 ; NOT.B D4
4481 ; NEG.L D1
3401 ; MOVE.W D1,D2
C4C0 ; MULU.W D0,D2
2601 ; MOVE.L D1,D3
4843 ; SWAP D3
C6C0 ; MULU.W D0,D3
4840 ; SWAP D0
C0C1 ; MULU.W D1,D0
D083 ; ADD.L D3,D0
4840 ; SWAP D0
4240 ; CLR.W D0
D082 ; ADD.L D2,D0
4A04 ; TST.B D4
6702 ; BEQ.B 0030
4480 ; NEG.L D0
4CDF 001C ; MOVEM.L (A7)+,D2-D4
4E75 ; RTS
;
;
#replace
4C01 0800 ; MULS.L D1,D0
4E75 ; RTS
#end